package com.jwds.digital.bios.business.core.infrastructure.dto.dispatch.assembler;

import com.jwds.digital.bios.business.core.infrastructure.dto.dispatch.DispatchRuleReqDTO;
import com.jwds.digital.bios.business.core.infrastructure.vo.dispatch.DispatchRuleRespVO;
import com.jwds.digital.bios.business.core.infrastructure.entity.dispatch.DispatchRule;
import java.util.Objects;

/**
 * DispatchRule DTO与Entity之间的相互转换
 *
 * @author 林柏云
 * @date 2024-10-24
 */
public class DispatchRuleAssembler {

  /**
  * 将传输对象转换为实体对象
  *
  * @param dto 传输对象
  * @return 实体对象
  */
  public static DispatchRule dto2entity(DispatchRuleReqDTO dto)  {
    if (dto == null) {
      return null;
    }
    DispatchRule entity = new DispatchRule();
    entity.setRuleCode(dto.getRuleCode());
    entity.setRuleName(dto.getRuleName());
    entity.setRuleDescription(dto.getRuleDescription());
    entity.setGeneralRule(dto.getGeneralRule());
    entity.setRulePriority(dto.getRulePriority());
    entity.setRuleCategory(dto.getRuleCategory());
    return entity;
  }

  /**
  * 将传输对象转换为实体对象
  *
  * @param dto 传输对象
  * @param entity 原实体对象
  * @return 实体对象
  */
  public static DispatchRule dto2entity(DispatchRuleReqDTO dto, DispatchRule entity){
    if (dto == null) {
      return null;
    }
    if(Objects.nonNull(dto.getRuleCode())) {
      entity.setRuleCode(dto.getRuleCode());
    }
    if(Objects.nonNull(dto.getRuleName())) {
      entity.setRuleName(dto.getRuleName());
    }
    if(Objects.nonNull(dto.getRuleDescription())) {
      entity.setRuleDescription(dto.getRuleDescription());
    }
    if(Objects.nonNull(dto.getGeneralRule())) {
      entity.setGeneralRule(dto.getGeneralRule());
    }
    if(Objects.nonNull(dto.getRulePriority())) {
      entity.setRulePriority(dto.getRulePriority());
    }
    if(Objects.nonNull(dto.getRuleCategory())) {
      entity.setRuleCategory(dto.getRuleCategory());
    }
    return entity;
  }

  /**
  * 将实体对象转换为传输对象
  *
  * @param entity 实体对象
  * @return 传输对象
  */
  public static DispatchRuleRespVO entity2dto(DispatchRule entity) {
    if (entity == null) {
      return null;
    }
    DispatchRuleRespVO dto = new DispatchRuleRespVO();
    dto.setId(entity.getId());
    dto.setRuleCode(entity.getRuleCode());
    dto.setRuleName(entity.getRuleName());
    dto.setRuleDescription(entity.getRuleDescription());
    dto.setGeneralRule(entity.getGeneralRule());
    dto.setRulePriority(entity.getRulePriority());
    dto.setRuleCategory(entity.getRuleCategory());
    dto.setCreateUser(entity.getCreateUser());
    dto.setCreateTime(entity.getCreateTime());
    dto.setModifyUser(entity.getModifyUser());
    dto.setModifyTime(entity.getModifyTime());
    return dto;
  }

}
